#include "FlashOp.h"

//********************************************************
// boot写memory
//********************************************************
void bootWriteMemory(uint32_t addr, uint16_t len, uint8_t *vals)
{ 
  FLASH_Unlock();
  FLASH_FastProgram(addr, (uint32_t)vals, len);
  FLASH_Lock();
}

//--------------------------------------------------------
// save_base_station_param()
//   功能： 保存基站id到flash,复位软件
//   输入： None
//   输出： None
//--------------------------------------------------------
void save_base_station_param(uint32_t addr, uint8_t *data)
{
   FLASH_Unlock();
   FLASH_Erase(addr, 3);
   FLASH_FastProgram(addr, data, 3);
   FLASH_Lock();
   UTIL_IdleMs(30);
   SYS_SoftwareReset();
}
//--------------------------------------------------------
// save_rf_param()
//   功能： 保存射频参数到flash,复位软件
//   输入： None
//   输出： None
//--------------------------------------------------------
void  save_rf_param(uint32_t addr, uint8_t *data)
{
   FLASH_Unlock();
   FLASH_Erase(addr, 6);
   FLASH_FastProgram(addr, data, 6);
   FLASH_Lock();
}

//--------------------------------------------------------
// load_baseStation_id()
//   功能： 从flash中加载基站地址
//   输入： None
//   输出： 基站频率偏移 根据基站id十进制数高2位数确定lora跳频（8位数）
//--------------------------------------------------------
uint8_t load_baseStation_id(uint32_t addr, uint8_t *data)
{
   uint32_t id=0;
   uint8_t *param = (uint8_t*)addr;
   //--从flash读取灯配置
   memcpy(data, param, 3);
   if(memcmp(data,"\xFF\xFF\xFF",3)==0)
   {
     data[0]=0x12;
     data[1]=0xED;
     data[2]=0x6B;
   }
   printf("> init baseStation add:0x%02x 0x%02x 0x%02x\r\n",data[0],data[1],data[2]);
   id = (data[0]<<16)|(data[1]<<8)|(data[2]);
   return id/1000000;
}

//--------------------------------------------------------
// save_station_ver()
//   功能： 保存基站固件版本到flash
//   输入： None
//   输出： None
//--------------------------------------------------------
void save_station_ver(uint32_t addr, uint8_t *ver)
{
   FLASH_Unlock();
   FLASH_Erase(addr, 4);
   FLASH_FastProgram(addr, ver, 4);
   FLASH_Lock();
}